From a712ffa2ab92b33953ba872086f1c1194708eae1 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 6 Aug 2020 20:01:26 -0400 Subject: [PATCH] widgetpaintable: Clear an idle in dispose We were not removing the pending_update idle in dispose, which is at least suspicious, if not deadly. Move the idle cleanup code into unset_widget(), which we are already calling in dispose(). --- gtk/gtkwidgetpaintable.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/gtk/gtkwidgetpaintable.c b/gtk/gtkwidgetpaintable.c index a2d6a0cc22..1ed017db9e 100644 --- a/gtk/gtkwidgetpaintable.c +++ b/gtk/gtkwidgetpaintable.c @@ -201,6 +201,13 @@ gtk_widget_paintable_unset_widget (GtkWidgetPaintable *self) self); self->widget = NULL; + + g_clear_object (&self->pending_image); + if (self->pending_update_cb) + { + g_source_remove (self->pending_update_cb); + self->pending_update_cb = 0; + } } static void @@ -332,19 +339,10 @@ gtk_widget_paintable_set_widget (GtkWidgetPaintable *self, self->widget = widget; if (widget) - { - widget->priv->paintables = g_slist_prepend (widget->priv->paintables, - self); - } + widget->priv->paintables = g_slist_prepend (widget->priv->paintables, self); g_object_unref (self->current_image); self->current_image = gtk_widget_paintable_snapshot_widget (self); - g_clear_object (&self->pending_image); - if (self->pending_update_cb) - { - g_source_remove (self->pending_update_cb); - self->pending_update_cb = 0; - } g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_WIDGET]); gdk_paintable_invalidate_size (GDK_PAINTABLE (self)); -- 2.30.2